import base64
import hashlib
import random
import string

'''加密模块'''

class UserService():
    @staticmethod
    def gen_pwd(pwd, salt):
        # base64加密
        pwd_base64 = base64.encodebytes(pwd.encode("utf-8"))
        str_salt = f"{pwd_base64}-{salt}"
        print('base64加密的密码-盐值：', str_salt)
        # md5加密
        m = hashlib.md5()
        m.update(str_salt.encode("utf-8"))
        # 以16进制的方式输出加密后的md5值
        return m.hexdigest()

    @staticmethod
    def genAuthCode(user_info):
        """根据用户实例对象生成密钥"""
        str = f"{user_info.uid}-{user_info.login_name}-{user_info.login_pwd}-{user_info.login_salt}"
        # md5加密
        m = hashlib.md5()
        m.update(str.encode("utf-8"))
        return m.hexdigest()

    @staticmethod
    def genSalt(length=16):
        """生成 加盐码"""
        # 设置随机值取值范围
        selectString = string.ascii_letters + string.digits  # 所有的数字和字母
        # 随机生成16个数字或者字母的组合
        key_list = [random.choice(selectString) for i in range(length)]
        return "".join(key_list)